<?php

class paomeIndexController extends base
{
    public function __construct()
    {
        parent::__construct('admin');
        // 判断权限
        if(empty($this->realUser['uid']) || !$this->load('adminList')->isAdminByHupuUid($this->realUser['uid']))
        {
            echo 'jrs, 不要四处乱看哦～～';
            exit();
        }
    }

    public function doinit() {}

    /**
     * 赛季列表
     */
    public function dogetPaomeList() {
        $arrStatus = common::$pmCupStatus;
        $name   = common::request('name','R','');//名称
        $status = common::request('status','R',0);//状态
        $listNum = 20;
        $p = common::request('p', 'G', 1);
        $start = ($p - 1) * $listNum;
        $parameter = '';
        $params = [];
        if (trim($name)) {
            $parameter .= '&title='."$name";
            $params['name'] = $name;
        }
        if ($status) {
            $parameter .= '&status='."$status";
            $params['status'] = $status;
        }

        $params['start'] = $start;
        $params['limit'] = $listNum;
        $list = $this->load('paome/cup')->getPaomeList($params);
        if($list) {
            foreach ($list as $key=>$val) {
                $startTime2 = $val['start_time'] ? date('Y-m-d H:i:s',$val['start_time']) : '';
                $endTime2 = $val['end_time'] ? date('Y-m-d H:i:s',$val['end_time']) : '';
                $list[$key]['formatTime'] = $startTime2.'--'.$endTime2;
                $list[$key]['statusMsg'] = isset($arrStatus[$val['status']]) ? $arrStatus[$val['status']] : '未知状态';
            }
        }
        $total = $this->load('paome/cup')->total;
        require FILE . 'lib/page.class.php';
        $page = new Page($total, $listNum, $parameter);
        $pageStr = $page->show();

        $this->view->assign('list', $list);
        $this->view->assign('pageStr', $pageStr);
        $this->view->assign('name', $name);
        $this->view->assign('status', $status);
        $this->view->assign('arrStatus', $arrStatus);
        $this->view->display('paome/paomeList');
    }

    /**
     * 赛季轮次列表
     */
    public function dogetPaomeRoundsList() {
        $paomeId =  common::request('paomeId','R',0);//赛季ID
        if (!$paomeId) {
            common::tips('参数丢失');exit;
        }
        $arrType = [
            1=>'第一轮招募期',
            5=>'第一轮预赛进行中',
            6=>'第一轮预赛结束空档期（22点到24点）',
            10=>'第一轮决赛进行中',
            11=>'第一轮决赛结束空档期（22点到24点）',
            12=>'第一轮休赛期',
            15=>'第二轮预赛进行中',
            16=>'第二轮预赛结束空档期（22点到24点）',
            20=>'第二轮决赛进行中',
            21=>'第二轮决赛结束空档期（22点到24点）',
            22=>'第二轮休赛期',
            25=>'第三轮预赛进行中',
            26=>'第三轮预赛结束空档期（22点到24点）',
            30=>'第三轮决赛进行中',
            31=>'第三轮决赛结束空档期（22点到24点）',
            32=>'第三轮休赛期',
            105=>'冠军争霸赛进行中',
            106=>'冠军赛结束空档期（22点到24点）'
        ];
        $parameter = '';
        $params = [];
        $parameter .= '&paomeId='.$paomeId;
        $params['paomeId'] = $paomeId;
        $list = $this->load('paome/cup')->getPaomeRoundsList($params);
        if($list) {
            foreach ($list as $key=>$val) {
                $startTime2 = $val['start_time'] ? date('Y-m-d H:i:s',$val['start_time']) : '';
                $endTime2 = $val['end_time'] ? date('Y-m-d H:i:s',$val['end_time']) : '';
                $list[$key]['formatTime'] = $startTime2.'--'.$endTime2;
                $list[$key]['typeMsg'] = isset($arrType[$val['type']]) ? $arrType[$val['type']] : '---';//截止赛事阶段
            }
        }

        $this->view->assign('list', $list);
        $this->view->display('paome/paomeRoundsList');
    }

    /**
     * page 创建赛季
     */
    public function doaddPaome() {
        $paomeId =  common::request('paomeId','R',0);//赛季ID
        $arrInfo = [];
        if ($paomeId) {
            $arrInfo = $this->load('paome/cup')->getPaomeInfo($paomeId);
            if (!$arrInfo) {
                common::tips('赛季不存在');exit;
            }
            $arrInfo['formatSignTime'] = $arrInfo['sign_time'] ? date('Y-m-d H:i:s',$arrInfo['sign_time']) : '';
            $arrInfo['formatStartTime'] = $arrInfo['start_time'] ? date('Y-m-d H:i:s',$arrInfo['start_time']) : '';
            $arrInfo['formatEndTime'] = $arrInfo['end_time'] ? date('Y-m-d H:i:s',$arrInfo['end_time']) : '';
        }

        $this->view->assign('info', $arrInfo);
        $this->view->assign('paomeId', $paomeId);
        $this->view->display('paome/addPaome');
    }

    /**
     * 上传赛季片首缩略图
     */
    public function doajaxUploadImage() {
        if (!$_FILES || ($_FILES['imgFile']['size'] == 0)) {
            echo json_encode(array('status'=>'fail','error_msg'=>'请选择上传文件!'));
            exit;
        }
        $imageName ='paomeCup_thumb_'.md5(microtime(TRUE).$_FILES['imgFile']['name']);
        $image_url = $this->load('qiniu')->uploadQiNiuImg('imgFile',$imageName);
        if (!$image_url) {
            echo json_encode(array('status'=>'fail','error_msg'=>'上传失败'));exit;
        }
        echo json_encode(array('status'=>'ok','error_msg'=>'上传成功','image'=>$image_url));
    }

    /**
     * ajax 创建赛季
     */
    public function doajaxAddPaome() {
//        var_dump($_REQUEST);exit;
        $id = common::request('paomeId', 'R', 0);//跑么杯ID
        $name = common::request('name', 'R', '');//跑么杯名称
        $image  = common::request('image', 'R', '');//跑么杯缩略图
        $imageText  = common::request('imageText', 'R', '');//跑么杯缩略图文案
        $minNum = common::request('minNum', 'R', 0);//参赛俱乐部人数 下限
        $maxNum = common::request('maxNum', 'R', 0);//参赛俱乐部人数 上限
        $rate   = common::request('rate', 'R', 0);//入选决赛百分比
        $introduce = common::request('introduce', 'R', '');//竞赛规则详细说明

        $signTime =  common::request('signTime', 'R', '');//招募时间
        $startTime = common::request('startTime', 'R', 0);//第一轮开始时间
        $totalDay = 28;//2轮比赛 7+7+7+4+3
        $endTime = date('Y-m-d 00:00:00', (strtotime($startTime)+86400*($totalDay)));
        //$endTime = common::request('endTime','R',0);//争霸赛结束时间
//        $startTime2 = common::request('startTime_2','R',0);//决赛开始时间
//        $endTime2 = common::request('endTime_2','R',0);//决赛结束时间

        if ($id) {//产品需求设定，不允许编辑赛季
            echo json_encode(array('status'=>'fail', 'error_msg'=>'赛季暂不允许编辑'));exit;
        }
        if (!trim($name)) {
            echo json_encode(array('status'=>'fail', 'error_msg'=>'赛季标题必填'));exit;
        }
        if (!$image || !isset($image[0]) || !$image[0]) {
            echo json_encode(array('status'=>'fail', 'error_msg'=>'缩略图必传'));exit;
        }
        if(!trim($imageText)) {
            echo json_encode(array('status'=>'fail', 'error_msg'=>'缩略图文案必填'));exit;
        }
        if(!preg_match('/^[1-9][0-9]*?$/', $minNum, $match)){
                echo json_encode(array('status' => 'fail', 'error_msg' => '下限必须>0,正整数'));exit;
        }
        if(!preg_match('/^[1-9][0-9]*?$/', $maxNum, $match)){
            echo json_encode(array('status' => 'fail', 'error_msg' => '上限必须>0,正整数'));exit;
        }

        if (!preg_match('/^[1-9][0-9](\.[0-9])?$/', $rate, $match)
            && !preg_match('/^[0-9]\.[1-9]$/', $rate, $match2)
            && !preg_match('/^100$/', $rate, $match3)) {
            echo json_encode(array('status'=>'fail', 'error_msg'=>'百分比范围0.1到100,最多1位小数')); exit;
        }
        if (!trim($signTime)) {
            echo json_encode(array('status' => 'fail', 'error_msg' => '招募开始时间必填'));exit;
        }
        if (!trim($startTime)) {
            echo json_encode(array('status' => 'fail', 'error_msg' => '第一轮开始时间必填'));exit;
        }

        /*赛事时间检测 start*/
//        if (count($startTime) <> 4) {
//            echo json_encode(array('status' => 'fail', 'error_msg' => '开始时间必填'));exit;
//        }
//        $arrRound = [];
//        foreach ($startTime as $key=>$val) {
//            if ($key <=2) {
//                if (!$val) {
//                    echo json_encode(array('status' => 'fail', 'error_msg' => '第'.($key+1).'轮-预赛 开始时间必填'));exit;
//                }
//                if (!$endTime[$key]) {
//                    echo json_encode(array('status' => 'fail', 'error_msg' => '第'.($key+1).'轮-预赛 结束时间必填'));exit;
//                }
//                if (!$startTime2[$key]) {
//                    echo json_encode(array('status' => 'fail', 'error_msg' => '第'.($key+1).'轮-决赛 开始时间必填'));exit;
//                }
//                if (!$endTime2[$key]) {
//                    echo json_encode(array('status' => 'fail', 'error_msg' => '第'.($key+1).'轮-决赛 结束时间必填'));exit;
//                }
//
//            } else { //冠军争霸赛
//                if (!$val) {
//                    echo json_encode(array('status' => 'fail', 'error_msg' => '冠军争霸赛 开始时间必填'));exit;
//                }
//                if (!$endTime[$key]) {
//                    echo json_encode(array('status' => 'fail', 'error_msg' => '冠军争霸赛 结束时间必填'));exit;
//                }
//            }
//
//            if ($key == 0) { //第一轮
//                $arrRound[] = array('type'=>1,'startTime'=>$val,'endTime'=>$endTime[$key]);//预赛
//                $arrRound[] = array('type'=>5,'startTime'=>$startTime2[$key],'endTime'=>$endTime2[$key]);//决赛
//            } else if ($key == 1) { //第二轮
//                $arrRound[] = array('type'=>15,'startTime'=>$val,'endTime'=>$endTime[$key]);//预赛
//                $arrRound[] = array('type'=>20,'startTime'=>$startTime2[$key],'endTime'=>$endTime2[$key]);//决赛
//            }  else if ($key == 2) { //第二轮
//                $arrRound[] = array('type'=>25,'startTime'=>$val,'endTime'=>$endTime[$key]);//预赛
//                $arrRound[] = array('type'=>30,'startTime'=>$startTime2[$key],'endTime'=>$endTime2[$key]);//决赛
//            } else if($key == 3) {
//                $arrRound[] = array('type'=>35,'startTime'=>$val,'endTime'=>$endTime[$key]);//冠军争霸赛
//            } else {
//                echo json_encode(array('status' => 'fail', 'error_msg' => '时间参数丢失!'));exit;
//            }
//        }
        /*赛事时间检测 end*/

        if (!trim($introduce)) {
            echo json_encode(array('status'=>'fail', 'error_msg'=>'竞赛规则详细说明必填'));exit;
        }
        //同一时间范围只能有一个赛季
        if($this->load('paome/cup')->getPaomeIsRepeatTime(strtotime($signTime),strtotime($endTime))) {
            echo json_encode(array('status'=>'fail', 'error_msg'=>'赛季时间不能交叉'));exit;
        }
        $fields = array();
        //$fields['id'] = $id;
        $fields['title']     = $name;
        $fields['image']     = $image[0];
        $fields['signTime']  = $signTime;
        $fields['startTime'] = $startTime;
        $fields['endTime']   = $endTime;
        $fields['minNum']    = $minNum;
        $fields['maxNum']    = $maxNum;
        $fields['imageText'] = $imageText;
        $fields['rate']      = $rate;
        $fields['rateType']  = 0;
        $fields['introduce'] = $introduce;
        $result = $this->load('paome/cup')->addpaome($fields);
        if ($result) {
            $arrRound = [];//轮次时间数组
            $arrRound[] = array('type'=>1, 'startTime'=>$signTime, 'endTime'=>date('Y-m-d 23:59:59',(strtotime($startTime)-1)));//第一轮招募期
            $arrRound[] = array('type'=>5, 'startTime'=>$startTime, 'endTime'=>date('Y-m-d 22:00:00',(strtotime($startTime)+86400*3)));//第一轮预赛
            $arrRound[] = array('type'=>6, 'startTime'=>date('Y-m-d 22:00:01',(strtotime($startTime)+86400*3)), 'endTime'=>date('Y-m-d 23:59:59',(strtotime($startTime)+86400*3)));//第一轮预选赛结束空档期（22点到24点）
            $arrRound[] = array('type'=>10, 'startTime'=>date('Y-m-d 00:00:00',(strtotime($startTime)+86400*4)), 'endTime'=>date('Y-m-d 22:00:00',(strtotime($startTime)+86400*6)));//第一轮决赛 第5天-第7天
            $arrRound[] = array('type'=>11, 'startTime'=>date('Y-m-d 22:00:01',(strtotime($startTime)+86400*6)), 'endTime'=>date('Y-m-d 23:59:59',(strtotime($startTime)+86400*6)));//第一轮决赛结束空档期 （22点到24点）
            $arrRound[] = array('type'=>12, 'startTime'=>date('Y-m-d 00:00:00',(strtotime($startTime)+86400*7)), 'endTime'=>date('Y-m-d 23:59:59',(strtotime($startTime)+86400*13)));//第一轮休赛期 第8天-第15天

            $arrRound[] = array('type'=>15, 'startTime'=>date('Y-m-d 00:00:00',(strtotime($startTime)+86400*14)), 'endTime'=>date('Y-m-d 22:00:00',(strtotime($startTime)+86400*17)));//第二轮预赛
            $arrRound[] = array('type'=>16, 'startTime'=>date('Y-m-d 22:00:01',(strtotime($startTime)+86400*17)), 'endTime'=>date('Y-m-d 23:59:59',(strtotime($startTime)+86400*17)));//第二轮预选赛结束空档期（22点到24点）
            $arrRound[] = array('type'=>20, 'startTime'=>date('Y-m-d 00:00:00',(strtotime($startTime)+86400*18)), 'endTime'=>date('Y-m-d 22:00:00',(strtotime($startTime)+86400*20)));//第二轮决赛
            $arrRound[] = array('type'=>21, 'startTime'=>date('Y-m-d 22:00:01',(strtotime($startTime)+86400*20)), 'endTime'=>date('Y-m-d 23:59:59',(strtotime($startTime)+86400*20)));//第二轮决赛结束空档期  （22点到24点）
            $arrRound[] = array('type'=>22, 'startTime'=>date('Y-m-d 00:00:00',(strtotime($startTime)+86400*21)), 'endTime'=>date('Y-m-d 23:59:59',(strtotime($startTime)+86400*24)));//第二轮休赛期 休赛4天

            $arrRound[] = array('type'=>105, 'startTime'=>date('Y-m-d 00:00:00',(strtotime($startTime)+86400*25)), 'endTime'=>date('Y-m-d 22:00:00',(strtotime($startTime)+86400*27)));//争霸赛 调整为 2轮 冠军争霸休赛4天
            $arrRound[] = array('type'=>106, 'startTime'=>date('Y-m-d 22:00:01',(strtotime($startTime)+86400*27)), 'endTime'=>date('Y-m-d 23:59:59',(strtotime($startTime)+86400*27)));//争霸赛 结束空档期  （22点到24点）
            foreach($arrRound as $key=>$val) {
                $this->load('paome/cup')->addPaomeRounds($result,$val);
            }

            echo json_encode(array('status'=>'ok', 'error_msg'=>'操作成功','url'=>'index.php?c=paome_index&a=getPaomeList'));exit;
        }
        echo json_encode(array('status'=>'fail', 'error_msg'=>'操作失败'));
    }


}